我有一個非常簡單的問題,我從沒想過會遇到 or 運算子和 f 字串。問題是始終列印phrase_1_random 隨機變數之一。雖然從不列印短語_2_random。我究竟做錯了什么?
我不必同時列印它們
我想列印phrase_1_random 或phrase_2_random,但從不列印X、Y 或Z
import random
text_1 = ("A", "B", "C")
text_2 = ("X", "Y", "Z")
phrase_1_random = random.choice(text_1)
phrase_2_random = random.choice(text_2)
result= f"{phrase_1_random}" or "{phrase_2_random}"
#or f"{phrase_1_random}" or f"{phrase_2_random}"
print(result)
uj5u.com熱心網友回復:
聽起來您希望操作員對oror執行某種隨機選擇,但這不是操作員所做的。phrase_1_randomphrase_2_randomor
or運營商做什么
當在or上面提供的語法中使用運算子時,它將從左到右評估賦值運算子 ( =) 右側的值。第一個值是“truthy”(在這種情況下,第一個值是非空字串)將用于賦值。
例子:
a = ""
b = "B"
thing = a or b # thing will be "B"
x = "X"
y = "Y"
thing2 = x or y # thing2 will be "X"
你可能想要什么
phrase_1_random如果您想從或中進行某種隨機選擇phrase_2_random,您也可以使用該random庫:
result= random.choice([phrase_1_random, phrase_2_random])
uj5u.com熱心網友回復:
它正在做應該做的事情。這是一個摘錄形式(w3schools):
Python 認為空字串的布林值是“假”,非空字串的布林值是“真”。對于'and'運算子,如果左值為真,則檢查并回傳右值。如果左值為假,則回傳對于'or'運算子,如果左值為真,則回傳,否則,如果左值為假,則回傳右值。
因為短語 1 總是有一個值,它總是會被列印出來。
uj5u.com熱心網友回復:
嘗試
import random
text_1 = ("A", "B", "C")
text_2 = ("X", "Y", "Z")
phrase_1_random = random.choice(text_1)
phrase_2_random = random.choice(text_2)
result= [f"{phrase_1_random}", f"{phrase_2_random}"]
print(random.choice(result))
或者更緊湊
import random
chars = ['A', 'B', 'C', 'X', 'Y', 'Z']
print(random.choice(chars))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433701.html
標籤:Python python-3.x 细绳 f弦
