[英]Python script crashes when I input an integer
我試圖在 py 中制作一個簡單的骰子,我嘗試制作這樣你可以改變骰子的邊數,如果它為空,默認為 6。但是當我輸入一些東西時,它崩潰了。
import keyboard #Import keyboard stuff like enter (pip install keyboard)
import random #Import random stuff
import time
sides = 1
sidesSelect = input("Amount of sides the dice has. If empty, 6: ")
is_non_empty= bool(sidesSelect)
if is_non_empty is False:
sides = 6
else:
sides = sidesSelect
time.sleep(0.5)
while True:
nmb = random.randint(1,sides) #Get random integer
print("The dice rolled ", nmb)
input('Press enter to roll the dice again') #Ask if you want to throw again
time.sleep(random.uniform(0.2,0.8))
我已經嘗試更改 == 是,但什么也沒發生
if is_non_empty is false:
您的代碼存在的一個問題是它試圖直接使用輸入而不考慮類型。
input()
返回一個字符串,因此在randint
使用它之前必須將其轉換為正確的類型
嘗試這樣的事情。
#python3
sidesSelect = int(input("Amount of sides the dice has. If empty, 6: ") or "6")
nmb = random.randint(1, sidesSelect) #Get random integer
您應該改為使用float(input(...))
將其轉換為浮點數,然后使用math.isnan()
檢查以確保它不是 NaN ,然后如果它是有效數字,則將其轉換為一個 int 並繼續。
import math
sidesSelect = float(input('Enter sides') or 'nan')
if math.isnan(sidesSelect):
sides = 6
else:
sides = int(sidesSelect)
#rest of code
因為 float(invalid) 會返回 nan,所以可以查看輸入的數字是否有效,如果有效,則轉換為 int。 否則,您可以使用默認設置,然后繼續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.