[英]Print function not printing results
我正在嘗試為一個簡單的游戲編寫代碼。 從一個基地開始,但我面臨着非常煩人的錯誤(而不是小故障)。
import random
winning_number = random.randint(1, 1000)
allowed_numbers_single_digit = random.randint(1, 10)
allowed_numbers_single_digit2 = random.randint(1, 10)
allowed_numbers_single_digit3 = random.randint(1, 10)
allowed_numbers_single_digit4 = random.randint(1, 10)
middle_column_numbers = (10, 15, 20, 25)
right_column_numbers = (50, 75, 100)
double_digit_allowed = random.choice(middle_column_numbers)
double_high_digits = random.choice(right_column_numbers)
print(f"""Number that we are looking for is {winning_number}.
You may use {allowed_numbers_single_digit, allowed_numbers_single_digit2, allowed_numbers_single_digit3,
allowed_numbers_single_digit4, double_digit_allowed, double_high_digits}
""")
x = input()
print(x)
if winning_number != x:
print('Sorry, no points for you')
else:
print('You got 10 points!')
我正在談論的故障:當用戶將數字輸入到字符串 'x' 時,下一行的寫法幾乎相同。 例如:如果用戶輸入 6+5,print 會打印出 6+5 而不是 11。有什么提示嗎?
當用戶輸入x
您會得到一個字符串,並且不會對其進行評估。 如果你想評估他們寫的表達式,你可以這樣做
x = eval(input())
在這種情況下, x
將是一個整數。
如果您只想將輸入的字符串解析為整數,(不支持 + 或 - 或其他),您可以這樣做
x = int(input())
eval
有潛在危險,在這種情況下實際上可以讓用戶作弊。 如果用戶winning_number
,則將選擇中獎號碼。
相反,您可以使用literal_eval
來避免這種情況。
import ast
x = ast.literal_eval(input())
這限制了用戶使用程序其余部分中定義的變量,以及運行任何代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.