Простой случайных чисел-угадайку


Я очень новой для программирования. Пытаюсь узнать, как я иду. Я сделал очень простой "Угадай число" игра. Просто хотел получить какую-то критику, увидеть, если я мог бы очистить его или что-либо изменить.

# user guesses the number. Returns Yes or sorry.
import random

# Instruct user to guess a number.
number = int(input("Guess a number, see if you're right."))

rn = random.randint(1,10)

if number == rn:  # User number equals random number
    print("You got it.")

else:  # Users number is not the same as random number.
    print("sorry")


Комментарии
2 ответа

используйте хорошие имена переменных: если вы используете randomNumberвместо rn и userNumber вместо number тогда "если" -заявление изменения в

if randomNumber == userNumber :

и ваш комментарий в этой строке устаревает.

Текущая версия программы может быть переписан без каких-либо переменных:

import random
if 1<=int(input("Guess a number, see if you're right!"))<=10:
if random.randint(1,10) == 1: # User succeeds, propability=1/10
print("You got it.")
else: # user fails, propability=9/10
print("Sorry.")
else: # this input number cannot succeed
print("Sorry.")


используйте комментарии с умом: не комментировать много. Если вы измените ваш код, то вы должны изменить ваши комментарии. В противном случае комментарии будут противоречить кодексу. Так что ваш комментарий в первых строках говорит, что " да " - это ответ вашей программы, но это не правда.

Комментарий как

# Instruct user to guess a number.

не является полезным. Цель заявлении он описал очевидные.


комментарии:
Текст в первой строке модуля, который описывает модуль (строкой документации) должен быть "'-строка, а не #-комментарий.


пользовательский интерфейс:

Входной текст как

"Input an integer number between 1 and 10 and press <return>!"

бы быть более полезным.

Если пользователь вводит значение, не являющееся числом, например, строки 'a'сообщение об ошибке, как

Traceback (most recent call last):
File "python", line 5, in <module>
ValueError: invalid literal for int() with base 10: 'a'

печатается. Это не очень удобно для пользователя. Возможно, это также полезно, чтобы предупредить пользователя, если он вводит целое число меньше 1 или больше 10.

очень педантичным: в соответствии с ДРУГИЕ МАТЕРИАЛЫ печати, если пользователь не следует печатать Sorry. вместо sorry. Sorry! может мне даже лучше. На восклицательный знак также может быть уместен здесь:

Guess a number, see if you're right!

Может быть, вы должны снова задать ему пользователя для входа, если был введен неверный ввод.


не используйте магические числа:
Использовать что-то вроде

MAX_NUMBER=10
....
random_number=random(1, MAX_NUMBER)

Также другие случаи из 10 должны быть заменены MAX_NUMBER, например, во входном тексте.


формат: поставив пустую строку после почти каждой строчки кода взрывает кода, но не делает его более читабельным. Используйте пустую строку, чтобы структурировать код. Поэтому я думаю, что нет смысла отделять 'если' и 'другой'-блок "Если",-говорится в пустую строку, потому что они принадлежат друг другу.

3
ответ дан 4 апреля 2018 в 08:04 Источник Поделиться

Можно добавить цикл "while", а не "если" заявление. Это позволит пользователю продолжать пытаться, пока это правильно, и очень подходящие для Python.

Также, если вы хотите быть действительно чистым комментарий PEP8 "функции и имена переменных". Вы хотите, чтобы ваши переменные в нижнем регистре, символы подчеркивания "_". В Python Дзен говорит: "явное лучше, чем неявное." Поэтому я хотел бы изменить вокруг именах переменных, чтобы быть более читаемым.

Например:

import random

max_num = 10
random_num = random.randint(0, max_num)

print("Guess a number:")
guess = int(input())

while not guess == random_num:
print("Sorry, try again:")
guess = int(input())
print("You got it!")

Я также хотел бы предложить, добавление попробуйте-кроме блока вокруг входных() вызов, чтобы предотвратить код от сбой, если пользователь вводит что-нибудь другое, чем целое. В Python инт("строка") возвращает ValueError. Так что вы хотели бы обеспечить для этого потенциальное исключение - оповещения соответственно, пользователей и позволяют им попробовать еще раз.

2
ответ дан 3 апреля 2018 в 08:04 Источник Поделиться